<?php
// +----------------------------------------------------------------------
// | Author: wyd 2025/10/19
// | DESC: 
// +----------------------------------------------------------------------

declare (strict_types=1);

use DI\Container;
use My\core\annotations\ClassAnnotation;

return [
    //类注解
    //这里最终实现的是 调用di的Container的 set方法设置类的别名；
    //使用di后可以全名调用，这里实现的是别名 调用；
    ClassAnnotation::class => function (Container $Container, $instance, array $args) {
        if (isset($args['alias']) && $args['alias'] !== '') {
            //别名调用(需要注解传递alias)和别名调用只能2选1
            $name = $args['alias'];
        } else {
            //短名调用(使用注解不能要参数)
            $dirArr = explode('\\', get_class($instance));
            $name = end($dirArr);
        }
        //这里是实例化对象绑定到 别名，
        $Container->set($name, $instance);
    }
];